package com.itheima.d3_exception;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 目标：异常的处理
 * 1.捕获异常，记录异常并响应合适的信息给用户
 * 2.捕获异常，尝试重新修复
 */

/**
 * 抛出异常（throws）
 * 在方法上使用throws关键字，可以将方法内部出现的异常抛出去给调用者处理。
 * // 推荐方式
 * 方法 throws Exception{
 *
 * }
 * // Exception代表可以捕获一切异常
 *
 *方法 throws 异常1 ，异常2 ，异常3 ..{
 *        …}
 */

/**
 * 捕获异常(try…catch)
 *
 * try{
 * // 监视可能出现异常的代码！
 * }catch(异常类型1 变量){
 * // 处理异常
 * }catch(异常类型2 变量){
 * // 处理异常
 * }...
 *
 * // 推荐方式
 * try{
 * // 可能出现异常的代码！
 * }catch (Exception e){
 * e.printStackTrace(); // 直接打印异常对象的信息
 * }
 * // Exception代表可以捕获一切异常
 */

/**
 * 1、异常处理的总结？
 * 在开发中异常的常见处理方式是：底层的异常抛出去给最外层，最外层集中捕获处理。
 */
public class ExceptionTest3 {

/*
    最外层调用者就不要抛出异常了，不符合开发规范，需要处理异常
    public static void main(String[] args)  throws FileNotFoundException,ParseException{
*/
    public static void main(String[] args)  {
        try {
            test1();
        } catch (FileNotFoundException e) {
            System.out.println("您要找的文件不存在！！");
            e.printStackTrace(); // 打印出这个异常对象的信息。记录下来。
        } catch (ParseException e) {
            System.out.println("您要解析的时间有问题了！");
            e.printStackTrace(); // 打印出这个异常对象的信息。记录下来。
        }
    }

    public static void test1() throws FileNotFoundException, ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date d = sdf.parse("2028-11-11 10:24:11");
        System.out.println(d);
        test2();
    }

    public static void test2() throws FileNotFoundException {
        // 读取文件的。
        InputStream is = new FileInputStream("D:/meinv.png");
    }
}
